const utils = require("../Services/utils");

const taobao = {};

let waitingForShopCart = true;

let isShopCart = false;

taobao.taobaoScript = function (isFirst) {
  isShopCart = false;
  waitingForShopCart = true;
  if (isFirst) {
    console.log(
      "当前设备比淘宝时间慢" +
        Api.tMailTimePlus +
        "ms，与淘宝服务器响应时间为" +
        Api.tMailNetWorkDelay +
        "ms"
    );
    openTaobao();
    console.log(content.waitShop);
    // 开启一个线程监听是否抢购结束
    threads.start(function () {
      while (true) {
        sleep(100);
        if (
          new Date(ui.taobaoInput.getText()).getTime() -
            Number(ui.taobaoEarlyTime.getText()) <=
          new Date().getTime() +
            Number(Api.tMailTimePlus) -
            Number(ui.taobaoInputTimeLength.getText()) * 1000
        ) {
          console.log("抢购结束");
          threads.shutDownAll();
        }
      }
    });
  }
  // 这里开启一个线程，持续监听是否在购物车页面
  const startThreads = threads.start(function () {
    // 这里执行的是购物车循环监听
    while (waitingForShopCart) {
      sleep(5);
      while (!isShopCart) {
        sleep(5);
        // 这里检测是否进入购物车
        if (id("button_cart_charge").exists() && text("全选").exists()) {
          if (isFirst) {
            console.log(content.alreadyShop);
          }
          isShopCart = true;
        }
      }
      while (isShopCart) {
        sleep(10);
        // 淘宝抢购时间戳-提前量 小于等于当前时间戳，则点击结算按钮
        if (
          new Date(ui.taobaoInput.getText()).getTime() -
            Number(ui.taobaoEarlyTime.getText()) <=
            new Date().getTime() +
              Number(Api.tMailTimePlus) -
              Number(Api.tMailNetWorkDelay) &&
          id("button_cart_charge").exists() &&
          text("全选").exists()
        ) {
          if (isFirst) {
            console.log("开始抢购");
          }

          // 这里执行持续点击，发现还有就继续点，处理一些手机动画反应较慢的问题
          while (id("button_cart_charge").exists() && text("全选").exists()) {
            sleep(5);
            if (id("button_cart_charge").exists() && text("全选").exists()) {
              try {
                const shopCartBtn = id("button_cart_charge").findOne();
                // 做随机数点击位置防止行为检测
                click(
                  shopCartBtn.bounds().centerX() + utils.randomFunc(10),
                  shopCartBtn.bounds().centerY() + utils.randomFunc(5)
                );
              } catch (e) {}
            }
          }

          waitingForShopCart = false;
          isShopCart = false;
          // 这里会执行完毕当前线程并继续执行下列方法
          updateOrder();
          // 停止当前线程
          startThreads.interrupt();
        }

        if (
          isShopCart &&
          (!id("button_cart_charge").exists() || !text("全选").exists())
        ) {
          if (isFirst) {
            console.log(content.waitShop);
          }
          isShopCart = false;
        }
      }
    }
  });
};

// 提交订单
function updateOrder() {
  // 这里没发现提交订单或发现我知道了就一直执行while
  while (!text("提交订单").exists() && !text("我知道了").exists()) {
    sleep(10);
  }
  // 判断是否被盾
  if (text("我知道了").exists()) {
    back();
    taobao.taobaoScript(false);
    return;
  }
  // 等待提交出现
  text("提交订单").waitFor();

  // 跳出while后继续执行下面代码
  if (text("￥0.00").findOne(50)) {
    // 无法提交，返回上一页
    back();
    taobao.taobaoScript(false);
  } else {
    // 这里执行抢购方案
    const submit = text("提交订单").findOne(50);
    const xValue = submit.bounds().centerX();
    const yValue = submit.bounds().centerY();
    // 模拟手动点击方案
    for (let i = 0; i < 10; i++) {
      sleep(utils.randomFuncPlus(10, 1));
      click(xValue + utils.randomFunc(10), yValue + utils.randomFunc(5));
    }

    // 判断是否被盾
    if (text("我知道了").findOne(1000)) {
      back();
      taobao.taobaoScript(false);
    } else {
      console.log(content.success);
    }
  }
}

// 打开淘宝
function openTaobao() {
  var alertConfirm = confirm(content.openTaobao);
  if (alertConfirm) {
    app.launch("com.taobao.taobao");
  }
}

// bp链接模式
taobao.bpModeTest = function bpMode(url) {
  app.startActivity({
    action: "android.intent.action.VIEW",
    packageName: "com.taobao.taobao",
    className: "com.taobao.android.purchase.TBPurchaseActivity",
    data: url,
  });
}

module.exports = taobao;
